package com.yanfan.energybilling.service;

import com.yanfan.common.core.domain.AjaxResult;
import com.yanfan.community.building.domain.BuildingTreeSelect;
import com.yanfan.energybilling.domain.vo.EnergyCostStatisticsVo;
import com.yanfan.energybilling.domain.vo.EnergyStatisticsVo;
import com.yanfan.energybilling.domain.vo.EquipmentEnergyBaseResp;
import com.yanfan.energybilling.domain.vo.StaticRequestParamVo;

import javax.servlet.http.HttpServletResponse;
import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

public interface IEnergyStatisticsService {
    List<EnergyStatisticsVo> buildingEnergyStatistics();

    List<EnergyCostStatisticsVo>  energyCostStatisticsTimeWindow(StaticRequestParamVo param);

    List<EnergyCostStatisticsVo> energyConsumeStatisticsTimeWindow(StaticRequestParamVo param);

    BigDecimal energyCost(StaticRequestParamVo param);

    Map<String,List<EnergyCostStatisticsVo>> energyCostStatisticsTimeWindows(StaticRequestParamVo param);

    Map<String,List<EnergyCostStatisticsVo>> energyCostStatisticsTimeWindowsByType(StaticRequestParamVo param);

    // 综合水费
    Map<String,List<EnergyCostStatisticsVo>> energyCostStatisticsTimeWindowsByWater(StaticRequestParamVo param);

    List<EnergyCostStatisticsVo> energyCostStatisticsTimeWindowsByDate(StaticRequestParamVo param);

    Map<String,List<EnergyCostStatisticsVo>> energyCostStatisticsTimeWindowsByBuilding(StaticRequestParamVo param);

    List<BuildingTreeSelect> buildingEnergyFlowStatistics(StaticRequestParamVo param);

    List<EnergyCostStatisticsVo> energyCountAllStatisticsTimeWindow(StaticRequestParamVo param);

    List<EquipmentEnergyBaseResp> energyComparisonOfTheSameCycle(StaticRequestParamVo param);

    void exportEnergyDeviceHistory(HttpServletResponse response,StaticRequestParamVo param);
}
